| Conditions | 6 | 
| Paths | 10 | 
| Total Lines | 32 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 2 | ||
| Bugs | 0 | Features | 0 | 
| 1 | var parse_host = function(host){ | 
            ||
| 2 | /** global: tlds */  | 
            ||
| 3 |     if(typeof tlds === "undefined"){ | 
            ||
| 4 |         throw new Error('No TLDs!'); | 
            ||
| 5 | }  | 
            ||
| 6 | |||
| 7 |     var parts = host.split("."); | 
            ||
| 8 | var stack = "";  | 
            ||
| 9 | var tld_level = 1; //unknown tld are 1st level  | 
            ||
| 10 |     for(var i=parts.length-1, part;i>=0;i--){ | 
            ||
| 11 | part = parts[i];  | 
            ||
| 12 | stack = stack ? part + "." + stack : part;  | 
            ||
| 13 |         if(!tlds[stack]){ | 
            ||
| 14 | break;  | 
            ||
| 15 | }  | 
            ||
| 16 | tld_level = tlds[stack];  | 
            ||
| 17 | }  | 
            ||
| 18 |     if(parts.length <= tld_level ) { | 
            ||
| 19 |         return { | 
            ||
| 20 | tld: null,  | 
            ||
| 21 | domain: host  | 
            ||
| 22 | };  | 
            ||
| 23 |     } else { | 
            ||
| 24 |         return  { | 
            ||
| 25 |             tld     : parts.slice(-tld_level).join('.'), | 
            ||
| 26 |             domain  : parts.slice(-tld_level-1).join('.'), | 
            ||
| 27 |             sub     : parts.slice(0, (-tld_level-1)).join('.'), | 
            ||
| 28 | };  | 
            ||
| 29 | }  | 
            ||
| 30 | |||
| 31 | |||
| 32 | };  |